
   TESTER build 100326
   ~~~~~~~~~~~~~~~~~~~

Тестер - программа для проверки решения на наборе тестов. Тестер 
пригодится всем, кто занимается олимпиадами по программированию: 
участникам, авторам задач, членам жюри олимпиад. Тестер является удобным 
средством для подготовки решений и тестов для задач по программированию: 
он позволяет мгновенно проверить решение на наборе тестов, позволяет легко 
добавлять новые тесты в набор, автоматически генерирует ответы к тестам на 
основе ответов эталонного решения, поддерживает внешние проверяющие 
программы, совместимые с библиотекой Testlib. Тестер является достаточно 
надежным и удобным для автоматической проверки решений на олимпиадах по 
программированию.

(c) Владимир Яковлев, 2003-2010
http://acm.timus.ru/tester


   ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ
   ~~~~~~~~~~~~~~~~~~~~~~~

Все авторские права на данную программу принадлежат только автору - 
Владимиру Яковлеву.
Вы можете использовать данную программу бесплатно в некоммерческих целях, 
любое другое использование возможно только с письменного согласия автора. 
Вы можете свободно распространять программу только вместе с настоящей 
лицензией.
ДАННАЯ ПРОГРАММА ПОСТАВЛЯЕТСЯ "КАК ЕСТЬ" И ЗА РЕЗУЛЬТАТЫ ЕЕ РАБОТЫ АВТОР 
НЕ НЕСЕТ НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Использование программы означает, что Вы понимаете положения настоящего 
лицензионного соглашения и согласны с ними.


   ИЗВЕСТНЫЕ ПРОБЛЕМЫ
   ~~~~~~~~~~~~~~~~~~

Известно, что
- в Windows 95/98/ME работают не все возможности Тестера;
- не поддерживается тестирование 16-битных приложений с перенаправлением 
ввода/вывода.

Если нужно прервать работу Тестера, используйте комбинацию клавиш 
Ctrl-C. При этом будут удалены созданные тестером временные файлы.


   ИСПОЛЬЗОВАНИЕ
   ~~~~~~~~~~~~~

!test.exe

Запустить программу на наборе тестов. Для запуска необходимо иметь файл 
!test.ini в текущем каталоге. В нем прописываются все настройки запуска.
Подробнее о настройках см. далее.
Запуск осуществляется последовательно на каждом тесте из набора, для 
каждого теста выводится фактическое время работы программы на этом тесте в
секундах, процессорное время работы в секундах (только для Windows NT и 
выше) и пиковое значение использованной памяти в килобайтах (только для 
Windows 2000 и выше). Затем приводится результат работы внешней или 
встроенной проверяющей программы.
Проверяемая программа может быть Win32-приложением, приложением для DOS, 
Java-приложением, .NET-приложением.

При успешном прохождении всех тестов код возврата программы будет 0,
при неудачном - 1, если произойдет ошибка - 2.


!test.exe <run-prog> [args]

Позволяет явно указать командную строку для запуска. В этом случае 
параметр RunProgram в файле настроек будет проигнорирован.

Примеры:
!test.exe sum.exe
!test.exe c:\dir with space\prog1.exe arg1 arg2
!test.exe java Solution


!test.exe -v [prog [args]]

Запустить программу проверки корректности тестов. Если параметр prog не 
указан, то используется значение RunProgram из файла настроек. Программа 
должна считывать тест со стандартного ввода. Если тест некорректен, то 
программа должна вывести описание ошибки на стандартный вывод и 
завершиться с ненулевым кодом возврата. Если тест корректен, то код 
возврата должен быть нулевым.

Примеры:
!test.exe -v validator.exe
!test.exe -v java Validator


!test.exe -ini:<ini-file>

Использовать альтернативный файл настроек. Параметр <ini-file> задает 
путь к этому файлу.

Пример:
!test.exe -ini:ini\d.ini


!test.exe -run:<run-prog>

Просто запустить программу <run-prog>. Файл !test.ini для этого не нужен. 
Будет замерено время работы фактическое и процессорное (только для 
Windows NT и выше), а также пиковое значение использованной памяти 
(только для Windows 2000 и выше).
Если имя программы содержит пробелы или требуется передать параметры, то 
run-prog следует заключить в кавычки.

Примеры:
!test.exe -run:calc
!test.exe -run:"my app.exe"
!test.exe -run:"rar a readme.rar readme.txt"


!test.exe -genini

Сгенерировать файл настроек по умолчанию. Замечание: отсутствие того или 
иного параметра в файле настроек или самого файла настроек не означает, 
что будут использоваться эти значения параметров, в такой ситуации 
Тестер просто не запустится.


!test.exe -?

Показать краткую справку.


   ФАЙЛ НАСТРОЕК
   ~~~~~~~~~~~~~

Файл настроек по умолчанию должен называться !test.ini.
Допускаются комментарии, которые начинаются символом точки с запятой (;) 
и продолжаются до перевода строки.

Список параметров:

RunProgram     Командная строка запускаемой программы. Путь к программе 
               может содержать пробелы.

TestInput      Маска файлов с входными данными. Последнее вхождение '00' 
               или '000' будет заменено номером теста. Нумерация начинается 
               с 01 или 001, соответственно.

TestAnswer     Маска файлов с эталонными выходными данными для теста. 
               Последнее вхождение '00' или '000' будет заменено номером 
               теста.

TestNumber     Количество тестов. Значение AUTO включает автоопределение 
               количества тестов. Максимальное значение - 999.

TimeLimit      Максимально допустимое время для работы программы, 
               заданное в секундах. Значение NO отключает TimeLimit. 
               Учитывается только процессорное время работы программы. 
               При долгом простое программы ее работа прерывается с 
               вердиктом idleness limit.

MemoryLimit    Максимально допустимый объем памяти, который может 
               использовать проверяемая программа, указанный в мегабайтах. 
               Значение NO отключает MemoryLimit.

Checker        Проверяющая программа. Эта программа будет запускаться для 
               проверки результатов. Ей будут передаваться параметры 
               <input-file> <output-file> <answer-file>, которые означают  
               соответственно файл с входными данными, файл с результатом
               работы программы и эталонные выходные данные. Таким 
               образом, Тестер совместим с библиотекой Testlib. 
               Используйте значение #TOKEN для встроенного сравнения по 
               токенам, #CHAR - для строгого посимвольного сравнения, 
               #FLOAT <N> (например, "#FLOAT 3" или "#FLOAT -2") - для 
               сравнения файлов, содержащих числа с плавающей точкой, с 
               заданной точностью N (целое число; соответствует количеству 
               знаков после десятичной точки). Числа A и B считаются 
               равными, если Abs(A - B) <= 1.1 * 10^(-N). Проверяющая 
               программа может быть 16-битной.

HideCheckerOutput 
               Если значение этого параметра равно YES или 1, то вывод 
               проверяющей программы подавляется, и на экран выводится 
               только либо "ok" либо "wrong answer".

HideProgramOutput 
               Если значение этого параметра равно YES или 1, то 
               консольный вывод проверяемой программы подавляется. В 
               противном случае проверяемая программа может выводить 
               данные прямо в текущую консоль. Если подавление отключено, 
               то не работает проверка досовских программ, а также могут 
               возникать конфликты с приложением Console Manager (conman). 
               Поэтому рекомендуется отключать этот режим только в 
               отладочных целях.

GenAnswers     Если значение этого параметра равно YES или 1, то 
               содержимое текущих файлов с выходными данными будет 
               заменено результатами работы программы на каждом тесте. 
               NO или 0 означает нормальную работу, AUTO - режим, при 
               котором создаются только несуществующие файлы, удобен при 
               добавлении новых тестов.

Interrupt      Если значение этого параметра равно YES или 1, то работа 
               Тестера завершается после первого неудачного запуска. 
               NO или 0 - продолжение тестирования в любом случае.

Pause          Если значение этого параметра равно YES или 1, то по 
               окончанию работы Тестера происходит задержка экрана. 
               NO или 0 - работа завершается немедленно.

InputFile      Файл, из которого тестируемая программа будет читать 
               входные данные. Значение #STDIN означает консольный ввод 
               (в этом режиме отсутствует поддержка проверки досовских 
               программ).

OutputFile     Файл, в который тестируемая программа будет выводить  
               результаты работы. Значение #STDOUT означает консольный 
               вывод (в этом режиме отсутствует поддержка проверки 
               досовских программ).

ScorePerTest   Баллы, начисляемые за каждый пройденный тест. 
               Необязательный параметр. Значение по умолчанию - 0.

ScoreAccepted  Баллы, начисляемые за прохождение всех тестов. 
               Необязательный параметр. Значение по умолчанию - 
               ScorePerTest, умноженное на количество тестов. В случае 
               отсутствия обоих параметров, баллы не подсчитываются.

